01
단층 퍼셉트론으로 만든 네 가지 게이트
가중치와 편향으로 AND, OR, NAND, NOR의 출력을 결정합니다.
logic_gates.py
# AND 게이트
def AND(x1, x2):
w1, w2, b = 0.5, 0.5, -0.7
if x1*w1 + x2*w2 + b >= 0:
return 1
else:
return 0
# OR 게이트
def OR(x1, x2):
w1, w2, b = 0.5, 0.5, -0.2
if x1*w1 + x2*w2 + b >= 0:
return 1
else:
return 0
# NAND 게이트
def NAND(x1, x2):
w1, w2, b = -0.5, -0.5, 0.7
if x1*w1 + x2*w2 + b >= 0:
return 1
else:
return 0
# NOR 게이트
def NOR(x1, x2):
w1, w2, b = -0.5, -0.5, 0.2
if x1*w1 + x2*w2 + b >= 0:
return 1
else:
return 0
각 함수는 x₁w₁ + x₂w₂ + b가 0 이상이면 1, 아니면 0을 출력합니다. XOR은 두 입력이 서로 다를 때 1입니다. XOR의 네 점은 하나의 직선으로 분리할 수 없어, 단층 퍼셉트론 하나로는 구현할 수 없습니다.
02
게이트를 조립해 XOR 만들기
입력층 → 은닉층 → 출력층. 미리 연결된 세 칸에 게이트를 놓고 네 가지 입력의 출력을 확인하세요.
목표: XOR 진리표
| x₁ | x₂ | XOR |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
조립 방법
아래 네 종류의 게이트를 원하는 칸으로 드래그하세요. 같은 종류를 여러 번 사용할 수도 있습니다. 모바일과 키보드에서는 게이트를 선택한 뒤 칸의 버튼을 누르세요.
0층은 입력층, 1층은 두 게이트를 놓는 은닉층, 2층은 한 게이트를 놓는 출력층입니다. 입력과 출력은 미리 연결되어 있으니 게이트만 배치하세요.
0층 · 입력층
x₁
x₂
1층 · 은닉층
2층 · 출력층
y
은닉층에서 ‘둘 다 1인 경우’와 ‘둘 다 0인 경우’를 각각 찾아 보세요. 출력층에서 이 두 경우를 모두 제외하면 XOR이 됩니다. AND, NOR, NOR를 조합해 보세요.
게이트를 배치하면 아래에 진리표가 나타납니다.
| x₁ | x₂ | G1 | G2 | G3 | 내 출력 | XOR | 확인 |
|---|
세 칸에 게이트를 모두 놓고 네 입력 조합의 결과가 모두 XOR과 같으면 성공입니다.